<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class M_Estado extends Modelo {

    public $id = null;
    public $fueroId;
    public $nombre;
    public $tieneValoracion;
    
    function __construct() {
        parent::__construct();
        $this->tabla = 'estados';
    }

    function setAttributes($datos = array(), $tipo = 'object') {
        return parent::_setAttributes(__CLASS__, $datos, $tipo);
    }
    
    function doArray() {
        return parent::_doArray(__CLASS__);
    }
    
    /**
     * Devuelve valores por defecto en un arreglo.
     */
    function getValidacion($edit = false) {
         if ($edit) {
            $valid = array(
                array('field' => 'fueroId', 'label' => 'Fuero', 'rules' => 'trim|required'),
                array('field' => 'nombre', 'label' => 'Nombre', 'rules' => 'trim|required'),
            );    
         }else{
             $valid = array(
                array('field' => 'nombre', 'label' => 'Nombre', 'rules' => 'trim|required'),  
             );       
         }

        return $valid;
    }
    
    /**
     * Devuelve valores por defecto en un arreglo.
     */
    function valoresPorDefecto() {
        return array(
            'fueroId' => '',
            'nombre' => '',
            'tieneValoracion' => 0,
        );
    }
    
    /**
     * Devuelve el ultimo estado de una causa
     */
    function getUltimoEstado($causaId) {
        $this->db->select($this->tabla . '.*');
        $this->db->from('causas_x_estados');
        $this->db->join($this->tabla, $this->tabla . '.id = causas_x_estados.estadoId');
        $this->db->where('causas_x_estados.causaId', $causaId);
        $this->db->order_by($this->tabla . '.id', 'DESC');
        $this->db->limit('1', '0');

        $results = $this->db->get();
        $results = $results->result_object();

        return $results[0];
    }
    
    /**
     * Devuelve verdadero o false si el estudio tiene causas asociados.
     */
    function tiene_causas() {
        $this->db->select('count(id) as tiene');
        $this->db->from('causas_x_estados');
        $this->db->where('estadoId = ' . $this->id);

        $results = $this->db->get();

        $resutado = $results->result_object();
        $resutado = $resutado[0];
        
        return ($resutado->tiene > 0) ? true : false;
    }
    
    /**
     * Devuelve las causas por estados
     */
    function getListPorCausaId($causaId) {
        $this->db->select('estados.id as estadoId, estados.nombre, estados.tieneValoracion, causas_x_estados.fechaEstado, causas_x_estados.id, causas_x_estados.causaId, causas_x_estados.estadoId, causas_x_estados.usuarioId, causas_x_estados.fecha, causas_x_estados.descripcion');
        $this->db->from($this->tabla);
        $this->db->join('causas_x_estados', 'causas_x_estados.estadoId = ' . $this->tabla . '.id');
        $this->db->where('causas_x_estados.causaId', $causaId);

        $results = $this->db->get();

        return $results->result_object();
    }
    
    /**
     * Devuelve las causas por estados
     */
    function getListPorCausaIdConValoracion($causaId) {
        $this->db->select('estados.id as estadoId, estados.nombre, causas_x_estados.fechaEstado, causas_x_estados.id, causas_x_estados.causaId, causas_x_estados.estadoId, causas_x_estados.usuarioId, causas_x_estados.fecha, causas_x_estados.descripcion');
        $this->db->from($this->tabla);
        $this->db->join('causas_x_estados', 'causas_x_estados.estadoId = ' . $this->tabla . '.id');
        $this->db->where('causas_x_estados.causaId', $causaId);
        $this->db->where('estados.tieneValoracion', '1');

        $results = $this->db->get();

        return $results->result_object();
    }

}